//判断数组中的元素是否连续

// 一个随机数组，如果排序后是连续的数字，那么就说这个数组连续
//其中0可以匹配任何数字，和扑克中的大小王似的

/**
    实际上，这是一个数学证明题，要想满足连续
    那么该数组的最大值和最小值之差,max-min = n-1;
    由于0，可以匹配任何数，除了0之外的最大值和最小值之差，不能超过n-1，那么就是连续的

*/
#include <iostream>
using namespace std;
int isSerial(int arr[],int n)
{
    int v_max = 1;
    int v_min = 65535;
    for(int i = 0;i<n;i++)
    {
        if(arr[i]>v_max)
        {
            v_max=arr[i];
        }
        if(arr[i]<v_min && arr[i]!=0)
        {
            v_min = arr[i];
        }
    }

    if(v_max-v_min <=n-1)
    {
        return 1;
    }else
    {
        return 0;
    }
}

int main()
{
    int arr1[6] = {5,6,7,0,9,10};

    int arr2[5] = {3,2,1,0,0};
    int arr3[5] = {2,3,7,0,0};
    cout<<"arr1="<<isSerial(arr1,6)<<endl;
    cout<<"arr2="<<isSerial(arr2,5)<<endl;
    cout<<"arr3="<<isSerial(arr3,5)<<endl;
    system("pause");
    return 0;
}
